package main

import (
	"log"
	"os"
	"os/exec"
	"syscall"
)
// 提供进程间通信的隔离能力
func main() {
	cmd := exec.Command("sh")
	cmd.SysProcAttr = &syscall.SysProcAttr{
		Cloneflags: syscall.CLONE_NEWUTS | syscall.CLONE_NEWIPC,
	}

	cmd.Stdin = os.Stdin
	cmd.Stdout = os.Stdout
	cmd.Stderr = os.Stderr

	if err:= cmd.Run();err != nil{
		log.Fatal(err)
	}
}


// 宿主机

// 连接成功
//[root@instance-h0un0kmz ~]# hostname
//instance-h0un0kmz
//[root@instance-h0un0kmz ~]# ipcmk -Q
//消息队列 id：0
//[root@instance-h0un0kmz ~]# ipcs -q
//
//--------- 消息队列 -----------
//键        msqid      拥有者  权限     已用字节数 消息
//0x01a7b5dd 0          root       644        0            0



// 进程中

//[root@instance-h0un0kmz IPC Namespace]# go run main.go
//sh-4.2# ls
//main.go
//sh-4.2# ipcs -q
//
//--------- 消息队列 -----------
//键        msqid      拥有者  权限     已用字节数 消息
//
//sh-4.2#




